package top.whysu.gps.dao.system;

import org.apache.ibatis.annotations.Param;
import top.whysu.gps.po.system.RolePO;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * 系统角色数据库操作接口类
 */
public interface RoleDao {

    /**
     * 根据id查询用户
     *
     * @param id e_system_role角色表的id
     * @return 角色持久化对象
     */
    RolePO selectById(BigDecimal id);

    /**
     * 根据参数查询集合
     *
     * @param params 查询参数[roleName: 角色名称（模糊搜索）]
     * @return 角色持久化对象集合
     */
    List<RolePO> selectList(Map params);

    /**
     * 根据参数查询集合
     *
     * @param params 查询参数[roleName: 角色名称（模糊搜索）]
     * @return 角色持久化对象集合
     */
    long countList(Map params);

    /**
     * 新增角色信息
     *
     * @param rolePO 用户持久化对象
     * @return 数据库被修改的行数
     */
    int insert(RolePO rolePO);

    /**
     * 更新角色信息
     *
     * @param rolePO 用户持久化对象
     * @return 数据库被修改的行数
     */
    int update(RolePO rolePO);

    /**
     * 根据ID删除角色
     *
     * @param id e_system_role的id
     * @return 数据库被修改的行数
     */
    int delete(BigDecimal id);

    /**
     * 根据角色名称查询角色信息
     *
     * @param roleName 角色名称
     * @return 角色持久化对象
     */
    RolePO selectByRoleName(@Param("roleName") String roleName);

    /**
     * 根据用户ID，查询相应用户的角色
     *
     * @param userId e_system_account账号表的id
     * @return 角色持久化对象集合
     */
    List<RolePO> selectRolesByUserId(BigDecimal userId);

    /**
     * 根据角色标志查询角色信息
     *
     * @param roleSign 角色标志
     * @return 角色持久化对象
     */
    RolePO selectByRoleSign(@Param("roleSign") String roleSign);
}
